﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://www.luogu.com.cn/problem/P1706
/*
题目描述：
题目描述
按照字典序输出自然数
1
1 到
�
n 所有不重复的排列，即
�
n 的全排列，要求所产生的任一数字序列中不允许出现重复的数字。

输入格式
一个整数
�
n。

输出格式
由
1
∼
�
1∼n 组成的所有不重复的数字序列，每行一个序列。

每个数字保留
5
5 个场宽。
*/

// 开始解题：
// 方法——dfs
#include <iostream>
#include <vector>
using namespace std;

vector<int> path;
int n = 0;
bool check[11];
void dfs(int k) {
	if (k == n) {
		for (int i = 0; i < n; i++) {
			printf("%5d", path[i]);
		}
		cout << endl;
		return;
	}
	for (int i = 1; i <= n; i++) {
		if (!check[i]) {
			check[i] = true;
			path.push_back(i);
			// 递归到下一层
			dfs(k + 1);
			// 恢复现场
			path.pop_back();
			check[i] = false;
		}
	}
}
int main() {
	cin >> n;
	dfs(0);
	return 0;
}